home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d1 / fff332.arc / ZOO.H < prev   
C/C++ Source or Header  |  1990-04-07  |  3KB  |  83 lines

  1. #ifndef DOS_DATE
  2. #define DOS_DATE
  3. typedef union {
  4.     unsigned u;
  5.     struct {
  6.         unsigned Day : 5;
  7.         unsigned Month : 4;
  8.         unsigned Year  : 7;
  9.         } b;
  10.     } DOS_FILE_DATE;
  11. #endif
  12.  
  13. #ifndef DOS_TIME
  14. #define DOS_TIME
  15. typedef union {
  16.     unsigned u;
  17.     struct {
  18.         unsigned Second : 5;
  19.         unsigned Minute : 6;
  20.         unsigned Hour   : 5;
  21.         } b;
  22.     } DOS_FILE_TIME;
  23. #endif
  24.  
  25. /*----------------------------------------------------------------------*/
  26. /*                  Maps of ZOO file headers and entries                */
  27. /*----------------------------------------------------------------------*/
  28.  
  29. #define PATHSIZE   256                        /* Max length of pathname */
  30. #define FNAMESIZE  13                        /* Size of DOS filename   */
  31. #define LFNAMESIZE 256                        /* Size of long filename  */
  32. #define SIZ_TEXT   20                        /* Length of header text  */
  33. #define VALID_ZOO  0xFDC4A7DCL                /* Valid ZOO tag          */
  34. #define FORMAT_ERROR 0xFF
  35. #define END_OF_FILE 0xEF
  36.  
  37. typedef char HeaderTextType[SIZ_TEXT];
  38. typedef char FNameType[FNAMESIZE];
  39. typedef char LFNameType[LFNAMESIZE];
  40. typedef char PathType[PATHSIZE];
  41.  
  42. typedef struct ZOOHeaderType {            /* ZOO file header        */
  43.     HeaderTextType HeaderText;          /* Character text        */
  44.     unsigned long ZOOTag;               /* Identifies archives    */
  45.     unsigned long ZOOStart;             /* Where data starts    */
  46.     unsigned long ZOOMinus;             /* Consistency check    */
  47.     unsigned char ZOOMajor;             /* Major version #        */
  48.     unsigned char ZOOMinor;             /* Minor version #        */
  49.     } ZOO_HEADER_TYPE;
  50.                                         /* One entry in ZOO library */
  51. typedef struct ZOOFixedType {            /* Fixed part of entry                */
  52.     unsigned long ZOOTag;               /* Tag -- redundancy check            */
  53.     unsigned char ZOOType;              /* Type of directory entry            */
  54.     unsigned char PackMethod;           /* 0 = no packing, 1 = normal LZW    */
  55.     unsigned long Next;                 /* Pos'n of next directory entry    */
  56.     unsigned long Offset;               /* Position of this file            */
  57.     DOS_FILE_DATE Date;
  58.     DOS_FILE_TIME Time;
  59.     unsigned int FileCRC;               /* CRC of this file                    */
  60.     unsigned long OrgSize;              /* Original file size                */
  61.     unsigned long SizeNow;              /* Compressed file size                */
  62.     unsigned char MajorVer;             /* Version required to extract ...    */
  63.     unsigned char MinorVer;             /* this file (minimum)                */
  64.     unsigned char Deleted;              /* Will be 1 if deleted, 0 if not    */
  65.     unsigned char Structure;            /* File structure if any            */
  66.     unsigned long Comment;              /* Points to comment;  zero if none    */
  67.     unsigned int CmtSize;               /* Length of comment, 0 if none        */
  68.     FNameType FName;                    /* Filename                            */
  69.     int VarDirLen;                      /* Length of var part of dir entry    */
  70.     unsigned char TimeZone;             /* Time zone where file was created    */
  71.     unsigned int DirCRC;                /* CRC of directory entry            */
  72.     } ZOO_FIXED_TYPE;
  73.  
  74. /*  Variable part of entry */
  75.  
  76. typedef char ZOO_VARYING_TYPE[4 + PATHSIZE + LFNAMESIZE];
  77.  
  78. /*    Prototypes for ZOO Processing Functions        */
  79.  
  80. void DoZOO (char *ZOOFileName);
  81. int GetZOOHeader (FILE *ZOOFile, unsigned long *ZOOPos);
  82. int GetNextZOOEntry (FILE *ZOOFile, unsigned long *ZOOPos, ZOO_FIXED_TYPE *ZOOEntry);
  83. void DisplayZOOEntry (FILE *ZOOFile, char *ZOOFileName, ZOO_FIXED_TYPE *ZOOEntry);